Callback beim Löschen eines Logs

Protokolle sind dazu da, um Informationen zu zeigen und vorzuhalten. In Protokollen kann man alles mögliche ablegen. Was macht man aber, wenn das Protokoll selbst gelöscht wird? Es gibt keine Änderungbelege dafür…

Funktionsbaustein

Glücklicherweise hat die SAP hier Vorarbeit geleistet: Es wird bei jedem Löschen ein Funktionsbaustein aufgerufen mit der Namenskonvention

“BAL_DBDEL_” + Protokoll-Objekt

Merkwürdigerweise gibt es hier keinen Beispielbaustein, den man kopieren kann. Es gibt aber andere Bausteine im System, die als Vorlage dienlich sind.

Wenn Sie also ein Protokollobjekt “ZDATEN” haben, dann können Sie den Funktionsbaustein BAL_DBDEL_EACC kopieren auf BAL_DBDEL_ZDATEN.

Sobald der Baustein aktiv ist, wird bei Aufruf des Bausteins BAL_DB_DELETE, der auch in der Transaktion SLG2 verwendet wird, Ihr Baustein aufgerufen.

Hier können Sie dann weitere Daten löschen oder – wie im folgenden Beispiel – einen Eintrag ins Syslog vornehmen.

Callback-Funktion sinnvoll nutzen

function bal_dbdel_zdaten.
*”——————————————————————–
*”*”Lokale Schnittstelle:
*”  IMPORTING
*”     REFERENCE(I_T_LOGS_TO_DELETE) TYPE  BALHDR_T
*”     REFERENCE(I_IN_UPDATE_TASK) TYPE  BOOLEAN
*”——————————————————————–

*———————————————————————
* THIS is THE CALLBACK Function Module for the Application Log
* -> HERE we can delete our own DB tables
*    which we use for additional data storage for the our action log
*
* – the function module had to follow the naming convention
*    BAL_DBDEL_… to get called !!!
*———————————————————————

* work areas
  data: ls_log type balhdr.

  loop at i_t_logs_to_delete into ls_log.

    call function ‘RSLG_WRITE_SYSLOG_ENTRY’
      exporting
        data_word1       = ls_log-extnumber
        data_word2       = sy-tcode
        data_word3       = ‘ ‘
        data_word4       = ‘ ‘
        data_word5       = ‘ ‘
        sl_message_area  = ‘ZZ’
        sl_message_subid = ‘1’  “Protokoll &A gelöscht, Transaktion &B”
      exceptions
        others           = 5.
  endloop.

endfunction.

Löschen verhindern?

Leider hat die SAP beim Vordenken versäumt, dass man evtl. auch das Löschen von bestimmten Protokollen verhindern möchte… Leider lässt sich das hier nur durch einen harten Abbruch mit z.B. MESSAGE X bewerkstelligen.

Enno Wulff

Leave a Comment